// 泛型对象
type X<T> = {
    a: T
}

// 泛型函数
type F<X> = (s: X) => void

// 泛型数组，直接使用Array
type A1 = Array<string>

// 泛型元组
type T11<X> = [X, string]

type RR<T> = {
    a: T,
    b: T | string,
    c: T & {}
}
type R3 = RR<string>
// 反向推断出泛型参数类型
type T3 = R3 extends RR<infer X> ? X: never // string
type R4 = Record<'a'|'n'|1, `_${any}_`>;
type T4 = R4 extends Record<infer K, infer T> ? [K, T] : never // ["a" | "n" | 1, `_${any}_`]